/* 
 * File:   Campania.cpp
 * Author: fibrizo
 * 
 * Created on 24 de mayo de 2014, 16:37
 */

#include "server_Campania.h"
#include <vector>
#include <string>
#include <iostream>

using std::vector;
using std::string;
using std::cout;
using std::endl;
typedef struct vector<Nivel> vectorN;

/***************************************************************************/
/*                              CONSTRUCTORES                              */
/***************************************************************************/

Campania::Campania() {
}

Campania::Campania(string nombre, size_t dificultad, vectorN listaDeNiveles, string ruta, size_t jugadores) {
    this->nombre = nombre;
    this->dificultad = dificultad;
    this->indiceNivelActual = 0;
    this->listaDeNiveles = listaDeNiveles;
    this->rutaImagen = ruta;
}

Campania::Campania(const Campania& orig) {
}

/***************************************************************************/
/*                                 SETTERS                                 */
/***************************************************************************/

void Campania::agregarNivel(Nivel nuevoNivel) {
    this->listaDeNiveles.push_back(nuevoNivel);
}

/***************************************************************************/

void Campania::setDificultad(size_t dificultad) {
    this->dificultad = dificultad;
}

/***************************************************************************/

void Campania::setNombre(string nombre) {
    this->nombre = nombre;
}

/***************************************************************************/

void Campania::setRutaImagen(string ruta) {
    this->rutaImagen = ruta;
}

void Campania::setRutaXML(string ruta){
    this->rutaXML = ruta;
}

/***************************************************************************/

void Campania::setCantJugadores(size_t jugadores) {
    this->cantJugadores = jugadores;
}

/***************************************************************************/
/*                                 GETTERS                                 */
/***************************************************************************/

Nivel Campania::getNivelActual() {    
    return this->listaDeNiveles[this->indiceNivelActual];
}

/***************************************************************************/

string Campania::getNombre() {
    return this->nombre;
}

/***************************************************************************/

string Campania::getRutaImagen() {
    return this->rutaImagen;
}

string Campania::getRutaXML(){
    return this->rutaXML;
}

/***************************************************************************/

string Campania::serializar() {  
    return NULL;
}

/***************************************************************************/

size_t Campania::getDificultad() {
    return this->dificultad;
}

/***************************************************************************/

size_t Campania::getCantJugadores() {
    return this->cantJugadores;
}

/***************************************************************************/
/*                               OTROS METODOS                             */
/***************************************************************************/

bool Campania::cambiarDeNivel(bool resultado) {
    if ((this->indiceNivelActual+1) >= listaDeNiveles.size())
        return false;
    if (resultado) 
        this->indiceNivelActual++;   // Avanzo al siguiente nivel
    else 
        this->indiceNivelActual /= 2;  // Vuelvo al nivel N/2
    return true;
}

/***************************************************************************/
/*                              DESTRUCTOR                                 */
/***************************************************************************/

Campania::~Campania() {
}

